Module 3 - Analyse statistique avec R - Séance 2
DUBii 2019
Leslie REGAD
2019-02-03
Etude de cas : le myélome multiple (MM)
- Prolifération incontrôlée des plasmocytes \(\rightarrow\) Affection de la moelle osseuse
- Cancer relativement rare
- Touche proportionnellement davantage les hommes que les femmes
- Atteint principalement les personnes âgées de plus de 60 ans et survient rarement avant 40 ans
- Symptômes
plasmocytes malins prennent peu à peu la place des autres cellules sanguines :
\(\rightarrow\) diminution de l’immunité humorale, anémie, infections, risque d’ecchymoses, ...
Destruction osseuse qui résulte de la décalcification en certains endroits du squelette
\(\rightarrow\) fractures peuvent aisément se produire à ces endroits
Question statistique
Est-ce le dosage molécule déoxypyridinoline (pyr) est un bon marqueur pour détecter la maladie ?
\(\quad\)
\(\rightarrow\) est-ce que le taux de pyr des patients malades est plus grand que celui des individus sains ?
\(\quad\)
Population = ensemble d’individus ayant des caractéristiques qui leur sont propres
Experience aléatoire / variable aléatoire
- Que mesure-t-on lors de l'expérience : \(X\) = 'le taux de pyr' \(\rightarrow\) Variable aléatoire
- Sur qui/quoi la variable aléatoire est mesurée : '1 patient' \(\rightarrow\) Unité statistique
Variables aléatoires (VA)
- Notations :
- Variable aléatoire : \(X\)
- Ses valeurs : \(x_i\)
- Caractérisée par son espérance et sa variance
- Espérance (\(E(X)\)) : caractérise la tendance centrale, la valeur moyenne, prise par la VA
- Variance (\(V(X)\)) : caractérise la dispersion de la variable autour de son espérance
Cas d'étude
Question biologique
Est-ce que le taux de pyr des patients malades est plus grand que celui des individus sains ?
\(\quad\)
- X ="Taux de pyr"
- US = un individu
- type = quantitative continue
Cas d'étude : présentation des données
dataMyelom <- read.table("data/myelom.txt", sep="\t", header=T)
dim(dataMyelom)
[1] 218 38
[1] "numero" "diagn" "stade" "sstade" "statut" "sexe" "adiag" "typeig" "kaplam" "pyr" "bp1" "caryo" "nbchrom" "hb" "gb" "plq" "plasmo" "creat" "ctx" "ntx" "fract" "calcemie" "pic" "albumine" "beta2" "ldh"
[27] "crp" "ploid" "tt1" "etatdn" "agedg" "deldgpr" "agepr" "ageprc" "deldgdn" "delprdn" "deldn" "normchr"
str(dataMyelom[,c("diagn", "pyr")])
'data.frame': 218 obs. of 2 variables:
$ diagn: int 1 1 1 1 1 1 1 1 1 1 ...
$ pyr : num 5.48 8.93 6.1 13.29 5.35 ...
diagn = 0 \(\rightarrow\) individus non malades
diagn = 1 \(\rightarrow\) patients malades
Description des deux échantiilons
table(dataMyelom[,"diagn"])
0 1
40 178
- échantillon 1 : 40 individus sains
ind.sain <- which(dataMyelom[,"diagn"]==0)
pyr0 <- dataMyelom[ind.sain,"pyr"]
- échantillon 2 : 178 patients malades
ind.malade <- which(dataMyelom[,"diagn"]==1)
pyr1 <- dataMyelom[ind.malade,"pyr"]
Description des deux échantillons
- distribution de pyr dans les deux échantillons
par(mar=c(3,3,1,1))
boxplot(pyr~diagn, data=dataMyelom)

Estimation de paramètres
- calcul de la moyenne de pyr dans les deux échantillons
by(dataMyelom[,"pyr"], dataMyelom["diagn"], mean)
diagn: 0
[1] 5.6985
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diagn: 1
[1] 7.241742
Estimation de paramètres
- calcul de la variance de pyr dans les deux échantillons
by(dataMyelom[,"pyr"], dataMyelom["diagn"], sd)
diagn: 0
[1] 2.527974
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
diagn: 1
[1] 4.089944
Quelle confiance donner aux résultats ?
- 1 population : \(X \sim \mathcal{N}(\mu=14.3 ; \; \sigma^2=24.6)\)
- Tire 1000 échantillons dans la population et calcule la moyenne de \(X\) dans les échantillons
nb.simul <- 1000 ; val.mean <- rep(NA, length = nb.simul)
for(i in 1: nb.simul){
ech <- rnorm(n = 100, mean=14.3, sd = sqrt(24.6)) ; val.mean[i] <- mean(ech)
}
hist(val.mean,xlab="estimateur de mu", main=paste(nb.simul,"simulations", sep=" "),breaks=20)

Estimation d'un paramètre : Intervalle de confiance (IC)
- Apporte deux informations :
- les valeurs possibles du paramètre \(\theta\) à estimer
- le degré de confiance attribué à ces valeurs
- Prend en compte
- la variabilité des données
- la taille de l’échantillon
\(\quad\)
- IC de la moyenne = intervalle \([m_{inf}; m_{sup}]\) dans lequel on considère que \(\mu\) a une probabilité \((1-\alpha)\) de se trouver
\[ p(m_{inf} < \mu < m_{sup}) = 1- \alpha \]
IC de la moyenne : 2 cas
- si \(n > 30\): \[IC_{1-\alpha} = M \pm z_{1-\frac{\alpha}{2}} \times \sqrt{ \frac{s^2}{n} }\]
- \(z_{1-\frac{\alpha}{2}}\) : quantile de la loi normale centrée réduite d'ordre \(\alpha\)
\(\quad\)
- si \(n < 30\) et \(X \sim \mathcal{N}(\mu; \sigma^2)\) \[IC_{1-\alpha} = M \pm t_{\alpha ; \textrm{(n-1)ddl}} \times \sqrt{\frac{s^2}{n}}\]
- \(t_{\alpha ; \textrm{(n-1)ddl}}\) : quantile de la loi de student d'ordre \(\alpha\) à \((n-1)\) degrés de liberté
IC du taux de pyr
- échantillon 1 : 15 patients sains
alpha <- 0.5
borneInf.0 <- mean(pyr0) - qt(1-alpha/2, df=(length(pyr0)-1)) * sqrt(var(pyr0)/length(pyr0))
borneSup.0 <- mean(pyr0) + qt(1-alpha/2, df=(length(pyr0)-1)) * sqrt(var(pyr0)/length(pyr0))
round(c(borneInf.0, borneSup.0),2)
[1] 5.43 5.97
- échantillon 2 : 14 patients atteints de MM
borneInf.1 <- mean(pyr1) - qt(1-alpha/2, df=(length(pyr1)-1)) * sqrt(var(pyr1)/length(pyr1))
borneSup.1 <- mean(pyr1) + qt(1-alpha/2, df=(length(pyr1)-1)) * sqrt(var(pyr1)/length(pyr1))
round(c(borneInf.1, borneSup.1),2)
[1] 7.03 7.45

Cas d'étude : Introductions aux tests statistiques
\(\quad\)
- 2 possibilités pour expliquer les différences entre \(m_1\) et \(m_2\) \(\rightarrow\) 2 hypothèses
- elles s'expliquent seulement par le hasard (fluctuations d'échantillonnage) : H0 (hypothèse nulle)
- elles s'expliquent par le hasard et par le facteur maladie : H1 (hypothèse alternative)
Déroulement d'un test statistique - 1
Point de départ : une question biologique : Est-ce que le taux moyen de pyr des patients malades est plus grands que celui des patients sains ?
\(\rightarrow\) définition de variable aléatoire et de ses paramètres
- X = "taux de pyr" : \(E(X)= \mu\) et \(V(X) = \sigma^2\)
- X1 = "taux de pyr chez les patients sains" : \(E(X_1) = \mu_1\) et \(V(X_1) = \sigma_1^2\)
- X2 = "taux de pyr chez les patients malades" : \(E(X_2) = \mu_2\) et \(V(X_2) = \sigma_2^2\)
- Définit deux hypothèses sur un des paramètres de la VA
- hypothèse nulle (H0) : égalité des paramètres : \(\mu_1 = \mu_2 = \mu\)
- hypothèse alternative (H0) : égalité des paramètres : \(\mu_1 < \mu_2\)
- Définit une expérimentation pour extraire des données relatives à la question posée :
- Création de deux échantillons :
- échantillon 1 composé de \(n_1\) patients sains
- échantillon é composé de \(n_2\) patients malade
- Mesure le taux de pyr de chaque patient
Les données sont considérées comme la réalisation de la variable aléatoire décrite dans la population
Déroulement d'un test statistique - 1
- Définit deux hypothèses sur un des paramètres de la VA
- hypothèse nulle (H0) : égalité des paramètres : \(\mu_1 = \mu_2 = \mu\)
Les différences observées sont expliquées uniquement par le hasard
- hypothèse alternative (H0) : égalité des paramètres : \(\mu_1 < \mu_2\)
Les différences observées sont expliquées uniquement par le hasard et par le facteur
\(\quad\)
Réaliser le test va consister à choisir une des deux hypothèses (H0 ou H1) en se basant sur les données des échantillons
\(\quad\)
\(\rightarrow\) Est-ce que les données des échantillons (\(m_1\) et \(m_2\)) sont compatibles avec H0 ?
- si oui \(\rightarrow\) non rejet de H0
- si non \(\rightarrow\) rejet de H0
Est-ce que les données sont compatibles avec H0 ?
- H0 : Hypothèse de référence : \(\mu1 = \mu_2\)
\(\rightarrow\) calculer la probabilité d'obtenir sous H0 le même résultat que celui observé sur les échantillons = p-value
Définir un critère statistique \(S\) dont la loi sous H0 est connue
\(S = M_1 - M_2\) avec \(M\)=moyenne de \(X\) dans 1 échantillon
Calculer \(s_{obs}\) = valeur de \(S\) calculée sur les échantillons : \(s_{obs} = m_1 - m_2\)

Est-ce que les données sont compatibles avec H0 ?
- H0 : Hypothèse de référence : \(\mu1 = \mu_2\)
\(\rightarrow\) calculer la probabilité d'obtenir sous H0 le même résultat que celui observé sur les échantillons = p-value
Définir un critère statistique \(S\) dont la loi sous H0 est connue
\(S = M_1 - M_2\) avec \(M\)=moyenne de \(X\) dans 1 échantillon
Calculer \(s_{obs}\) = valeur de \(S\) calculée sur les échantillons : \(s_{obs} = m_1 - m_2\)

- Calculer la p-value = \(p(S>s_{obs})\)
- forte valeur de p-value \(\rightarrow\) : \(s_{obs}\) est fortement probable sous \(H0\)
Est-ce que les données sont compatibles avec H0 ?
- H0 : Hypothèse de référence : \(\mu1 = \mu_2\)
\(\rightarrow\) calculer la probabilité d'obtenir sous H0 le même résultat que celui observé sur les échantillons = p-value
Définir un critère statistique \(S\) dont la loi sous H0 est connue
\(S = M_1 - M_2\) avec \(M\)=moyenne de \(X\) dans 1 échantillon
Calculer \(s_{obs}\) = valeur de \(S\) calculée sur les échantillons : \(s_{obs} = m_1 - m_2\)

- Calculer la p-value = \(p(S>s_{obs})\)
- très faible valeur de p-value \(\rightarrow\) : \(s_{obs}\) est très peu probable sous \(H0\)
Interprétation de la p-value : \(p(S>s_{obs})\)
- p-value = 0.03
\(\rightarrow\) 3% de chance que la valeur \(s_{obs}\) se produise sous H0
\(\rightarrow\) on a 3% de chance que 2 échantillons pris au hasard aient la même différence (ou une différence plus grande) que celle observée
\(\quad\) \(\quad\)
\(\quad\)
- on choisit un risque \(\alpha\) comme valeur seuil : souvent 5%
si p-value > 0.05 \(\rightarrow\) non rejet de H0
\(\rightarrow\) les différences observées sur les échantillons sont expliquées uniquement par le hasard
\(\rightarrow\) aucun effet facteur
si p-value < 0.05 \(\rightarrow\) rejet de H0
\(\rightarrow\) Les différences observées ne sont pas seulement dues aux fluctuations d'échantillonnage. Il y a donc un effet du facteur
\(\rightarrow\) les différences observées sur les échantillons sont expliquées par le hasard et par le facteur
les erreurs
Deux erreurs possibles quand on conclut au test :
- erreur de type I : je conclus à 1 effet de la maladie alors qu'en réalité il n'y en a pas.
- erreur de type II : je conclus à \(\emptyset\) effet de la maladie alors qu'en réalité il existe.
- risque de 1ère espèce (\(\alpha\)) : \(p(\textrm{rejet H0 } | \textrm{ H0 est vraie})\)
risque de 2ème espèce (\(\beta\)) : \(p(\textrm{non rejet H0 } | \textrm{ H0 est fausse})\)
Puissance du test \(\textrm{Puissance} = 1 - \beta = p(\textrm{rejet H0} | \textrm{H0 est fausse})\)
La probabilité de détecter une différence alors qu'il en existe une
Diminuer l'erreur de type II / Augmenter la puissance du test
- Augmenter la taille d'effet
- Diminuer la variabilité des données (variance des données)
- Augmenter la taille de l'échantillon
Comparaison du taux de pyr chez les patients malades et contrôles
Est-ce que le taux de pyr des patients malades est plus grand que celui des individus sains ?
- hypothèses
H0 : \(\mu_1 = \mu_2 \quad \quad \quad \quad \quad \quad\) H1 : \(\mu_1 < \mu_2\)
t.test(pyr~diagn, data=dataMyelom, var.equal=TRUE, alternative="less")
Two Sample t-test
data: pyr by diagn
t = -2.2878, df = 216, p-value = 0.01156
alternative hypothesis: true difference in means is less than 0
95 percent confidence interval:
-Inf -0.428922
sample estimates:
mean in group 0 mean in group 1
5.698500 7.241742
- p-value \(< 0.05 \rightarrow\), le test est significatif au risque de 5%
Le taux de pyr des individus contrôles est significativement plus petit de celui des patients malades
Le dosage de pyr est un bon marqueur de la maladie.
Les différents types de tests : suivant H1
H0 : \(\mu_1 = \mu_2\)
Test unilatéral : un sens dans l'effet
H1 : \(\mu_1 \geq \mu_2\)
Test bilatéral : aucun sens dans l'effet
H1 : \(\mu_1 \ne \mu_2\)
Les différents types de tests : suivant la VA